package com.web.service;

import com.web.pojo.domain.Address;
import com.web.pojo.vo.AuthorizeDTO;

import java.util.List;

/**
 * @Author: wws
 * @Date: 2021/1/25 17:22
 * describe:
 */
public interface AddressServer {
    /**
     * 新增保存地址信息
     * @param addressTree 地址信息
     * @return 结果
     */
    public Integer insertAddress(Address addressTree);

    /**
     * 修改地址信息
     * @param addressTree 地址信息
     * @return 结果
     */
    public Integer updateAddress(Address addressTree);

    /**
     * 删除设备树信息
     * @param addressId 地址id
     * @return 结果
     */
    public Integer deleteAddress(String updateBy,Integer addressId);

    /**
     * 检查地址树名称是否唯一
     * @param addressTree 地址信息
     * @return 结果
     */
    public Boolean checkAddressNameUnique(Address addressTree);

    /**
     * 查询地址树列表
     * @param userId 用户Id
     * @return 结果
     */
    public List<Address> selectAddressList(Integer userId,String addressName);

    /**
     * 查询地址树节点下是否拥有网关
     * @param addressId 地址id
     * @return 结果
     */
    public Boolean checkAddressExistGateWay(Integer addressId);

    /**
     * 查询地址树节点下是否拥设备
     * @param addressId 地址id
     * @return 结果
     */
    public Boolean checkAddressExistDevice(Integer addressId);

    /**
     * 查询地址树节点下是否拥有子节点
     * @param addressId 地址id
     * @return 结果
     */
    public Boolean checkAddressExistChild(Integer addressId);

    /**
     * 查询地址树信息
     * @param addressId 地址id
     * @return 结果
     */
    public Address selectAddress(Integer addressId);

    /**
     * 查看地址根节点
     * @param userId 用户Id
     * @return 结果
     */
    public List<Address> selectAddressRootNode(Integer userId);

    /**
     * 查看地址子节点列表
     * @param addressId 地址id
     * @return 结果
     */
    public List<Address> selectAddressChildNodeList(Integer addressId);


    /**
     *
     * @param dto 授权信息
     * @return 结果
     */

    /**
     * 地址授权
     * @param ids 授权的Id
     * @param userId 用户id
     * @return 结果
     */
    public Integer authorizeAddress(List<Integer> ids , Integer userId);

}
